package com.dayuanit.util;

import java.util.List;

public class PageUtil<T> {

    private int currPage; // 当前页
    private int pageSize; // 每页多少条数据
    private int navCount; // 导航条中的总数字
    private int rowCount; // 总数据量

    private int nextPage; // 下一页
    private int prevPage; // 上一页
    private int pageCount; // 总页数

    private int firstPage; // 首页
    private int lastPage; // 尾页

    private int startNav; // 起始导航数字
    private int endNav; // 结束导航数字

    private List<T> pageData; // 一页的数据内容

    public int getCurrPage() {
        return currPage;
    }

    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getNavCount() {
        return navCount;
    }

    public void setNavCount(int navCount) {
        this.navCount = navCount;
    }

    public int getRowCount() {
        return rowCount;
    }

    public void setRowCount(int rowCount) {
        this.rowCount = rowCount;
    }

    public int getNextPage() {
        return nextPage;
    }

    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;
    }

    public int getPrevPage() {
        return prevPage;
    }

    public void setPrevPage(int prevPage) {
        this.prevPage = prevPage;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getFirstPage() {
        return firstPage;
    }

    public void setFirstPage(int firstPage) {
        this.firstPage = firstPage;
    }

    public int getLastPage() {
        return lastPage;
    }

    public void setLastPage(int lastPage) {
        this.lastPage = lastPage;
    }

    public int getStartNav() {
        return startNav;
    }

    public void setStartNav(int startNav) {
        this.startNav = startNav;
    }

    public int getEndNav() {
        return endNav;
    }

    public void setEndNav(int endNav) {
        this.endNav = endNav;
    }

    public List getPageData() {
        return pageData;
    }

    public void setPageData(List pageData) {
        this.pageData = pageData;
    }

    public PageUtil() {
    }

    public PageUtil(int currPage, int pageSize, int navCount, int rowCount) {
        this.currPage = currPage;
        this.pageSize = pageSize;
        this.navCount = navCount;
        this.rowCount = rowCount;

        this.pageCount = (int) Math.ceil(this.rowCount / (this.pageSize * 1.0));
        this.firstPage = 1;
        this.lastPage = this.pageCount;

        // 避免传过来的currPage不在首页和尾页之间
        this.currPage = this.currPage < this.firstPage ? this.firstPage
                : this.currPage;
        this.currPage = this.currPage > this.lastPage ? this.firstPage
                : this.currPage;

        this.prevPage = this.currPage - 1 <= 0 ? this.firstPage
                : this.currPage - 1;

        this.nextPage = this.currPage + 1 >= this.lastPage ? this.lastPage
                : this.currPage + 1;

        // 计算起始导航数字和结束导航数字: 始终保证this.endNav - this.startNav = this.navCount - 1;
        this.startNav = (this.currPage - this.navCount / 2) < this.firstPage ? this.firstPage
                : (this.currPage - this.navCount / 2);

        this.endNav = (this.startNav + this.navCount - 1) > this.lastPage ? this.lastPage
                : (this.startNav + this.navCount - 1);


        if (this.pageCount > this.navCount) {
            this.startNav = this.endNav - this.startNav < this.navCount - 1 ? this.endNav
                    - this.navCount + 1
                    : this.startNav;
        }

    }



}
